package Z001HelloWorld;

/****
 * LOL有很多英雄，比如盲僧，团战可以输，提莫必须死，盖伦，琴女
 * 所有这些英雄，都有一些共同的状态
 * 比如，他们都有名字，hp，护甲，移动速度等等
 * 这样我们就可以设计一种东西，叫做类，代表英雄这样一种事物
 * 类： 英雄(Hero)
 * 状态： 名字, 血量，护甲，移动速度
 *
 * 注: 本例用到了3种数据类型 分别是
 * String(字符串)，float(浮点数), int(整数)，
 * 本章只做简单的使用 ，就不展开了，
 * 关于变量知识的详细讲解，将在下个章节展开.
 * 注: 这个类没有主方法，不要试图运行它。 并不是所有的类都是有主方法的
 */
 
public class Hero {
    // 类的第一个字母大写

    String name;   // 姓名
    float hp;      // 血量
    float armor;   // 护甲
    int moveSpeed; // 移动速度



    void keng(){
        System.out.println("坑队友！");
    }
    //    有的方法是有返回类型的 比如方法:
    float getArmor(){
        return armor;
    }
    //    属性的类型可以是基本类型，比如int整数，float 浮点数
    //    也可以是类类型，比如String 字符串
    void legendary(){ }
    //一个空的方法
    float getHP(){
        return this.hp;
    }  // 返回 this，就是调用这个方法的对象的名字
    void recovery(float blood){
        this.hp = hp + blood;
    }   // 返回这个对象的血加blood

    // 默认的修饰符
    void addSpeed(int speed){
        moveSpeed = moveSpeed + speed;
    }

    // 主函数
    public static void main(String[] args) {
        //  new 在栈中建立索引，在堆中分配空间
        Hero garen = new Hero();

        garen.name = "盖伦";
        garen.hp = 345.67f;
        garen.armor = 27.78f;
        garen.moveSpeed = 350;

        garen.addSpeed(100);

        Hero teemo = new Hero();
        teemo.name = "提莫";
        teemo.hp = 383f;
        teemo.armor = 14f;
        teemo.moveSpeed = 330;

/**
  类就像一个模板，根据这样一个模板，可以创建一个个的具体的英雄
  一个个具体的英雄，就叫一个个的对象
  new Hero() 就是java中创建一个英雄对象的意思
 */
    }
}
